1. Field of the Invention
The present invention relates to a computer system and, in particular, to a system and method for controlling the flow of messages to minimize congestion and prevent deadlocks in communications.
2. Related Art
A typical computer system has a number of nodes, each node having a processor, a memory, one or more input/output (I/O) devices, and interfaces that connect all the nodes. Typical computer systems also have a communication scheme so that the nodes may talk to each other. Many computer systems communicate by passing messages among the nodes across a communications network within the computer system.
For example, suppose a first processor wants to read data from a memory of a second processor. Suppose also that the second processor wishes to read data from a memory of the first processor. In order to accomplish these two tasks, messages are sent between the first and second processors over the communications network. In the first instance, the first processor sends a request (to read data) to the second processor. When the request arrives at the second processor, the second processor must send a reply to the first processor. The reply may be that the second processor does not possess an accurate version of the requested data. Alternatively, the reply may include the requested data. In any event, the two processors communicate by passing messages between them.
Message passing systems may become congested as a result of too much message traffic passing between two particular nodes, for example. This congestion can create a deadlock condition in the communications network. Deadlock exists when messages in the communications network can make no forward progress.